#ifndef SAW_H_
#define SAW_H_

#include "../../SAMA_Function.h"

/*模块可调参数结构体*/
typedef struct {
	float High_Value;   //< 波峰
	float Low_Value;    //< 波谷
	float Width_Value;  //< 波宽度
	float Time;         //< 发生时间
}SAW_Par_t;


/*模块运算中间参数结构体定义*/
typedef struct {
	float Time_Sum;		//< 锯齿波响应等待时间累积值
	float Time_Last;    //< 记录上位上一次下发的“发生时间”
	float Run_Time;     //< 锯齿波模块运行时间
}SAW_Sta_t;


/*模块参数结构体定义*/
struct SAW_T
{
	Model_Base_t Base;	//< 模块基本参数结构体
	SAW_Par_t Par;		//< 模块可调参数结构体
	SAW_Sta_t Sta;		//< 模块运算中间参数结构体
};


extern SAW_T* SAW_t;

/*函数*/
bool CALCU_SAMA(SAW)(Model_Base_t* arg, float dt, bool* DI, bool* DO, float* AI, float* AO);	//< SAMA运算函数
int BC_PARA(SAW)(Model_Base_t* arg, void** Data);											    //< 广播SAMA参数变量函数（无参数需要广播的模块直接将BCPara函数设置为NULL即可）
int BAK_STA(SAW)(Model_Base_t* arg, void** Data);											    //< 备份SAMA运算中间参数
int ANA_STA(SAW)(Model_Base_t* arg, void** Data);											    //< 解析备份的SAMA运算中间参数
int CHANGE_PAR(SAW)(Model_Base_t* arg, void** Data);											//< 在线修改模块参数函数
void INIT_STAPAR(SAW)(Model_Base_t* arg);													    //< 初始化模块运算中间参数


#endif
